<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>浅拷贝和深拷贝</title>
    <script>
        /* 
            浅拷贝（shallow copy）
                -通常对对象的拷贝都是浅拷贝
                浅拷贝值对对象的浅层进行复制（只复制一层）

                如果对象中存储的是原始值，深拷贝和浅拷贝都是一样的。
                    浅拷贝只会对对象本身进行复制，不会复制对象里的属性，只是复制这个属性的引用，而不是复制这个内部对象本身。
            


            深拷贝(deep copy)
                不仅复制对象本身，还复制对象里的属性。   
                通常情况下不使用深拷贝，因为性能问题。

                深拷贝的方法
                structuredClone()   // 专门用来深拷贝的方法
        
        */
        const arr= new Array()
        arr[0]={name:'孙悟空',age:18,gender:'男'}
        arr[1]={name:'猪八戒',age:17,gender:'男'}
        arr[2]={name:'沙和尚',age:17,gender:'男'}

        const arr1=arr.slice()      //浅拷贝

        const arr2=structuredClone(arr) //  深拷贝

        console.log(arr)
        console.log(arr1)
        console.log(arr2)

        // 浅拷贝
        for(let i=0;i<arr.length-1;i++ ){
           console.log(arr1[i]===arr[i])    // true
        }
        // 深拷贝
        for(let i=0;i<arr.length-1;i++ ){
           console.log(arr2[i]===arr[i])    // false
        }
    </script>
</head>
<body>
    
</body>
</html>